Media Player Operating in Multiple Modes

ABSTRACT

In one embodiment, a method plays, a media program in a media player operating in a first mode on an interface. A change in a condition is detected for the media player. Then, the method switches from the first mode to a second mode based on the change in the condition. The second mode restricts movement of the media player. The media player is moved from a first position to a second position upon switching to the second mode and the media player continues to play the media program in the second position.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/294,423 filed Jun. 3, 2014 entitled “Media Player Operating inMultiple Modes”, which claims priority to U.S. Provisional PatentApplication No. 61/831,530 filed Jun. 5, 2013 entitled “Media PlayerOperating in Multiple Modes”, all of which are incorporated by referencein its entirety for all purposes.

BACKGROUND

Sending video to an application is a popular way to view video content.A user typically plays a video in a media player displayed in anapplication or a web page. In one case, the video player may be afull-screen version that takes up the whole screen of the interface. Inanother case, a user may use a smaller version of the media player thatis embedded in a page of the application.

When a user uses the full-screen version, the user cannot perform anyother actions on the page, such as scroll the page to a differentposition. If the user does want to perform any other actions, the usertypically has to exit or minimize (e.g., go to an embedded version) themedia player. This allows the user to navigate the page to view othercontent. However, exiting the media player may stop the playing of thevideo.

When the media player is minimized or when the user uses the embeddedversion of the media player, the user may perform other actions whilewatching the video. For example, a user may navigate to different partsof the page by scrolling the page horizontally or vertically. However,when scrolling the page, the embedded media player also moves, and maymove to an undesirable position in the interface.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a simplified system for providing media programsaccording to one embodiment.

FIG. 2 depicts one example of an interface according to one embodiment.

FIG. 3A shows an example of a media player playing in the inline modeaccording to one embodiment.

FIG. 3B shows an example of media player that includes a control baraccording to one embodiment.

FIG. 4 shows an example of a media player playing in the docked mode ina container according to one embodiment.

FIG. 5 depicts a more detailed example of a player controller in theclient according to one embodiment.

FIG. 6 depicts a simplified flowchart of a method for controlling themedia player according to one embodiment.

FIG. 7 shows a video streaming system in communication with multipleclient devices via one or more communication networks according to oneembodiment.

FIG. 8 show a diagrammatic view of an apparatus for processing videocontent to operate a media player in different modes according to oneembodiment.

DETAILED DESCRIPTION

Described herein are techniques for operating a media player indifferent modes. In the following description, for purposes ofexplanation, numerous examples and specific details are set forth inorder to provide a thorough understanding of particular embodiments.Particular embodiments as defined by the claims may include some or allof the features in these examples alone or in combination with otherfeatures described below, and may further include modifications andequivalents of the features and concepts described herein.

Overview

Particular embodiments provide a media player that switches betweenmodes automatically. In one example, a page includes trays that can beindividually moved by a user. The trays may include embedded mediaplayers that a user can use to play a media program in-line (e.g., inthe tray). The trays allow a user to move various parts of the pagewhile the media program plays in one of the trays. For example, a usermay scroll the tray playing the media program horizontally or scrollother trays. Also, the user may scroll the entire page vertically tomove all the trays at once. Because this movement is allowed whileplaying the media program, a user may scroll the media player in thetray to an out of bounds position (e.g., off-screen or partiallyoff-screen). When this occurs, particular embodiments may transition themedia player to a different operating mode. In the transition, the mediaplayer is also moved to a different position in the interface. Forexample, particular embodiments may transfer the media player to adocked media player (e.g., a stationary media player) in a differentposition on the page, such as on the bottom of the page.

FIG. 1 depicts a simplified system 100 for providing media programsaccording to one embodiment. System 100 includes any number of clientsand servers although only one client 102 and one server 104 are shown.Server 104 may provide media programs to client 102 via a media programdelivery service, such as a streaming service. In one embodiment, server104 may be part of a content delivery service (CDS) that delivers mediaprograms on behalf of the media program delivery service. For example,the media program delivery service may provide a site, page, orapplication in which users can browse through a library of mediaprograms (e.g., videos, movies, shows, etc.) to play back on clientdevices. Also, in other embodiments, streaming delivery may not be usedand the media player may be used in an offline mode. That is, the videois being played from a storage device accessible to client 102, and notstreamed from server 104. The disclosure will reference a “page”, whichwill be understood to include any information that can provide a mediaplayer for playing media programs. For example, an application installedon a client 102 may display a page as described below. The media programdelivery service will be described in more detail below.

Client 102 may include an interface 106 and a player controller 108. Inone embodiment, client 102 may be any type of device that can play mediaprograms, such as laptop computers, mobile phones, smartphones, personalcomputers, televisions, tablet devices, etc. A more detailed example ofclient 102 will be described below. Interface 106 may be a userinterface that runs an application, such as an installed application orweb browser, to display a page, such as a webpage or other document. Inone embodiment, the page allows users to browse content, search forcontent, and play the content, which may include media programsincluding videos or audio content offered by the media program deliveryservice. A user may select one of the media programs and server 104 thensends the media program to client 102 for playing in media player 110.

As will be discussed in more detail below, player controller 108switches between operating modes for media player 110 when certainconditions occur, such as when media player 110 is moved out of bounds.Although player controller 108 is shown in client 102, it will beunderstood that player controller 108 may be found in server 104 oranother device. Due to a user scrolling the page, media player 110 maybe moved to an out of bounds position. When the out of bounds positionoccurs, player controller 108 switches the operating mode of mediaplayer 110 such that the media player is moved to a different positionon the page so that the player is visible to the user. Also, theoperating mode may be a different mode, such as a mode in which themedia player cannot be moved even when the user scrolls the page.Although the mode and the position of media player 110 may be switched,both actions may not be performed together. For example, playercontroller 108 may move the position of media player 110, but not changethe mode. In this case, media player 110 may still be playing in theinline mode. The following will describe a structure of a page thatallows the scrolling, and then the operating mode switch will bedescribed.

Page Structure

The page displayed by interface 106 may take many different forms. FIG.2 depicts one example of interface 106 according to one embodiment. Thecontent may be arranged in different movable portions of the page. Inone embodiment, the portions are referred to as trays 204-1-204-3. Forexample, a tray 204 may show multiple tiles that display information formedia programs. Also, trays 204 may be used to organize the mediaprograms into groups, such as dramas, action, new releases, etc.

Each tray can be individually scrolled horizontally (or vertically, orany other direction) to display different tiles. For example, as a userscrolls tray 204-1 to the left, tray 204-1 displays different mediaprograms. In one embodiment, user input from an input device, such as amouse, touch pad, touch- or pressure-sensitive screen, digitizer,keyboard, remote control, etc., may cause the scrolling. As shown at208, a media program #4 is partially off-screen of interface 106. Whenscrolling to the left, the tile including media program #4 may becomefully visible. This allows a user to view more media programs in thetray. Other trays 204-2 and 204-3 may also have other partially visibleor off-screen tiles that can be displayed upon scrolling. The scrollingmay also cause tiles to become not visible. For example, at 210, whentray 204-2 is scrolled to the left, this tile will go off-screen andcannot be viewed. Also, the tile including media player 110-1 may alsogo partially off-screen or fully off-screen.

Trays 204 may also be individually scrollable. That is, when a tray204-1 is scrolled, only that specific tray scrolls—the other trays 204-2and 204-3 remain stationary. In addition to scrolling individual trays204, a user may scroll a page displaying the trays vertically (orhorizontally), which scrolls all of trays 204 in the scrolling directionof the page at once. This scrolling may display additional trays 204 orother content on the page.

Each tile in a tray 204 is a container for displaying information (e.g.,an icon or thumbnail) for a media program. A container may also be aplace to add a media player. The tiles may allow a user to performdifferent actions, such as play a media program or display additionalinformation. For example, a user may select a tile at 206 to display theepisodes for a TV series. Also, trays 204 may include embedded mediaplayers 110. For example, tray 204-2 includes a media player 110-1 and amedia player 110-2 that allow a user to play media programs in tray204-2. In one example, a media player 110-1 allows a user to play afirst video and a media player 110-2 allows a user to play a secondvideo. Playing a media program in the tray may be referred to as a firstmode of operation or an inline mode. The inline mode plays the mediaprogram in the tile while allowing the user to perform other actionswithin interface 106, such as the user can still browse for othervideos, search for different content, share content, etc. while themedia program in media player 110 is playing.

When a tile includes a media player 110, the tile may display athumbnail of the media program or other information with a play button202 positioned in the tile, such as near the center of the tile. Thedisplay of play button 202 may indicate that the playback can start witha selection (e.g., one click) of the tile. In one embodiment, mediaplayer 110 is presented as a big tile before playback is triggered. Thebigger tile allows playback to start in the same tile and re-sizing ofthe media player may not performed to playback the media program. Inanother embodiment, tiles may not be used. For example, the thumbnailimage may be included in a container where a short description ortagline of the video is displayed. In this case, the container may bethe entire tray 204.

When the tile (e.g., the playback button) is selected, player controller108 (shown in FIG. 1) may cause media player 110 to play a correspondingmedia program. For example, if a user selects playback button 212-1,media player 110-1 plays media program #6, and if a user selectsplayback button 212-2, media player 110-2 plays media program #7. Theplayback starts at a certain position of the media program, such as at atime corresponding to where the thumbnail is positioned in the video orat the beginning of the media program.

In-Line Operating Mode

FIG. 3A shows an example of media player 110-1 playing in the inlinemode according to one embodiment. The controls to perform trick playfunctions are hidden. As shown, media player 110-1 is playing in thetile that a user selected that was previously displaying a thumbnailwith playback button 202 in FIG. 2. Media player 110-1 was not moved toanother position for playback or changed in size. However, in otherembodiments, the page may display a slightly larger or smaller mediaplayer 110-1 or may move the position slightly. As described above,media player 110-1 is operating in an in-line mode because the mediaplayer is still displayed in the tile and will also move when scrollingactions are performed with either tray 204-2 or the entire page. FIG. 3Bshows an example of media player 110-1 that includes a control bar 302according to one embodiment. A limited number of controls are provideddue to the size of media player 110-1 in the tile. That is, the amountof space to display media players is restricted and thus a full controlpanel is not provided.

The playback of the media program continues as the user may performother actions. For example, the user may scroll trays 204 individually.This may include scrolling different trays from the tray that includesthe media player. For example, if media player 110-1 is playing themedia program, a user may scroll tray 204-1 to view the tiles of thattray. This does not affect the positioning of tiles in tray 204-2.However, a user may scroll tray 204-2, which moves media player 110-1.For example, an arrow at 304 shows that tray 204-2 is being moved to theleft, which also moves media player 110-1 to the left. Another way ofmoving the page is for a user to scroll the entire page, which moves allof trays 204-1-204-3 (and media player 110-1) at once.

As discussed above, because media player 110-1 can move, a user may movemedia player 110-1 to an undesirable position, such as out of bounds.Being out of bounds may be when media player 110-1 is partially or fullyoff screen or may be a position in interface where the visibility isoccluded for a user (e.g., moved behind an object overlaid on the page,too far to the bottom of the page, etc.). In the page shown in FIG. 3A,a user may move media player 110-2 out of bounds to the left or right byscrolling tray 204-2 or out of bounds on the top or bottom of the pageby scrolling the page. In one example shown at 304, the user may movetray 204-2 horizontally to the left. This may cause media player 110-1to move to an off-screen position. For example, a portion of mediaplayer 110-1 may go off-screen or the entire media player 110-1 may bemoved off-screen. In other examples, media player 110-1 may be movedbehind any object on the page such that media player 110-1 is occludedfrom view of the user. When the out of bounds condition occurs, playercontroller 108 transitions media player 110-1 to the docked mode.

Docked Operating Mode

When media player 110-1 is moved to an out of bounds position, playercontroller 108 may switch media player 110 between different modes ofoperation. For example, player controller 108 may switch from playingmedia player 110-1 in the inline mode to another mode, such as a dockedmode.

The docked mode is where a docked media player 110-1 is unable to move,e.g., the media player 110-1 is docked in a position of the interface106. One purpose of transitioning to the docked mode is to move mediaplayer 110-1 to a mode that will fully display media player 110-1 ininterface 106. Also, transitioning to the docked mode recognizes thatthe user is browsing the page and may not fully be concentrating solelyon watching the media program. The docked mode allows the user to browsethe page without being concerned with moving media player 110 out ofbounds. Other modes may also visibly display media player 110-1. Forexample, instead of the docked mode, the application may display mediaplayer 110-1 in another tile or tray that in currently visible ininterface 100. Further, the application may overlay media player 110-1in the visible area of interface 100, pop up another window, or openanother page with media player 110-1. In one embodiment, all of thedifferent modes move the position of media player 110-1 into a fullyvisible position.

When a user navigates the page, the docked mode is a mode in which mediaplayer 110-1 does not move based on a user's navigation of the page. Forexample, a user may continue to scroll tray 204-2 horizontally. Whenthis occurs, media player 110-1 is docked at a position of the page andremains stationary. Further, when the user may scroll the pagevertically up or down, this moves trays 204 to different positions onthe page vertically, but media player 110-1 does not move with thescrolling of the page in the docked mode. In this way, media player110-1 is stationary and will always be displayed no matter whatscrolling a user performs on the page. In other embodiments, mediaplayer 110-1 may be allowed to move in the docked mode, but playercontroller 108 may put additional restrictions on the movement, such asmedia player 110-1 cannot be moved out of bounds.

In one embodiment, player controller 108 determines when tiles move toan out of bounds position. When this occurs, the tile is detached fromthe tray and player controller 108 transitions media player 110 to thedocked mode. Also, player controller 108 may continuously calculate aposition of media player 110-1, and determine when the position isconsidered out of bounds. In addition to transitioning between modesautomatically, whether in inline mode or docked mode, interface 104 mayreceive an input (e.g., a gesture) that may cause player controller 108to transition media player 110-1 to another mode. For example, playercontroller 108 may transition media player 110-1 from the inline mode tothe docked mode based on a pinching or swipe gesture. Also, playercontroller 108 may transition media player 110-1 back to a previousmode, such as from the docked mode to the inline mode, or vice versa.Further, player controller 108 may transition media player 110-1 to athird mode, such as a full screen mode. The full screen mode is wheremedia player 110-1 is displayed in a full screen in which the user canonly watch the video at this point using interface 104. In oneembodiment, the gesture may be a zoom out gesture. In anotherembodiment, an explicit button inside media player 110-1 may convert theplayer to the full screen mode, to the docked mode, or back to theprevious mode.

FIG. 4 shows an example of a media player 110-1 playing in the dockedmode in a container 400 according to one embodiment. In the docked mode,media player 110-1 may have a larger control bar shown at 404 from thatshown in FIG. 3B when media player 110-1 was operating in the inlinemode. The larger control bar includes more functionality with additionalcontrols than the controls provided in inline mode. For example, thecontrols may include play, pause, rewind, scrub, share, etc. Anadditional area 406 may show more information about the media programthan the information shown in inline mode, such as the title,description, or captions. The larger control bar and additionalinformation is possible due to media player 110-1 being placed into alarger container 400 than the previous tile. However, the size of mediaplayer 110-1 in the docked mode may vary. For example, media player110-1 may only be playing in a tile in container 400. However, this tilemay be docked or not moveable.

Interface 104 may show the change from the inline mode to the dockedmode by an animation transferring media player 110-1 to container 400.For example, the player controller 108 opens a new container 400 ininterface 104. Then, player controller 108 transfers media player 110-1to the new container 400. In lieu of an animation, player controller 108may perform the transfer immediately without animation.

Media player 110-1 continues to play the media program in the dockedmode. For example, the media program may continue to play at acorresponding point in the media program from when the transitionstarted. Also, the tile in tray 204-2 may stop playing the mediaprogram. In this case, the tile may revert back to the state beforemedia player 110-1 was playing the media program in the inline state.For example, the tile redisplays the playback button 212-1 to indicateplayback could be started in the tile. Also, player controller 108 mayhave caused the page to shift upward as shown in FIG. 4 to accommodatethe placing of container 400 in the page. As shown, tray 204-1 is onlypartially visible. However, in other embodiments, player controller 108may not shift the page upward and may overlay container 400 over part ofthe page.

Player Controller

FIG. 5 depicts a more detailed example of player controller in client102 according to one embodiment. Player controller 108 includes aposition manager 502, a player mode manager 504, and a media contentmanager 506.

In a step 1 (reference numeral 508), manager 506 receives the mediaprogram from a content server. Media player 110 then displays the mediaprogram in the inline mode. Media player 110 continues to play the mediaprogram in the inline mode until a mode transition occurs or playback isstopped.

In a step 2 (reference numeral 510), position manager 502 determineswhen media player 110 goes out of bounds. Position manager 110 may makethis determination in different ways. For example, position manager 502may calculate a position of media player 110, which is actively playingthe media program. Position manager 502 uses the position to determinewhen media player 110 goes out of bounds. In other embodiments, positionmanager 502 may determine which tiles go out of bounds. To detect whenmedia player 110 goes out of bounds, position manager 502 may receivescrolling actions to calculate the position of media player 110. Forexample, position manager 502 receives scrolling actions from interface104. In this case, the user may be scrolling different trayshorizontally or scrolling the page vertically. As discussed above, oneof the trays includes the media player 110 that is currently playing avideo. To determine when media player 110 is out of bounds, positionmanager 502 may determine an original position of media player 110 whenplay of the media program in the media player is activated. Then, asposition manager 502 receives the different scrolling actions, playercontroller 108 calculates the new position of media player 110. Forexample, when a scrolling action to the left occurs, position manager502 calculates where media player 110 has moved and updates the currentposition of media player 110. Also, position manager 502 may bedetermining which tiles go out of bounds to determine which tiles shouldbe displayed in trays 204. For example, as a user scrolls tray 204,position manager 110 detects when different tiles are detached fromtrays 204 (e.g., the tiles are not displayed) as the tiles go out ofbounds.

Position manager 502 may continuous evaluate whether media player 110goes out of bounds. For example, position manager 502 compares theposition to a threshold or out of bounds coordinates to determine ifmedia player 110 goes out of bounds. The threshold may be different,such as only a small part of media player 110 may have to go out ofbounds, half of media player 110, or the entire media player. Fordiscussion purposes, media player 110 has gone out of bounds because theuser has moved tray 204-1 to the left such that media player 110 ispartially off-screen (e.g., not displayed in the visible area ofinterface 106) and position manager 502 detects this occurrence.

In a step 3 (reference numeral 512), position manager 502 outputs anindication that media player 110 has gone out of bounds. When positionmanager 502 outputs the out of bounds indication, in a step 4 (referencenumeral 514), player mode manager 504 transitions media player 110 toanother mode, such as a docked mode. For example, as shown in atransition at 516, interface 106 now displays media player 110 in thedocked mode at 518. Further, player mode manager 504 has moved mediaplayer 110 to another position in interface 106.

In addition to transitioning media player 110 to a different mode, mediaplayer 110 continues to play the media program in media player 110.Before the mode switch, media content manager 506 displays segments ofthe media program that are received from the content server in mediaplayer 110 in the inline mode. However, when media player 110 istransferred, in a step 5 (reference numeral 520), media content manager506 receives the next segments of the media program to display, andmedia content manager 506 displays the segments in media player 110 inthe docked mode. In one embodiment, media player 110 is the same mediaplayer operating in the same session, and media content manager 506 cancontinue to play the media program no matter where the media player ispositioned and irrespective of the operating mode. In other embodiments,if a new media player is created, media content manager 506 can startplaying the media program at a similar time that the media programstopped playing in the previous mode. Other methods for playing themedia program in different modes will be appreciated.

Flowcharts and Example Code

FIG. 6 depicts a simplified flowchart 600 of a method for controllingmedia player 110 according to one embodiment. At 602, player controller108 receives navigation information for the page being displayed oninterface 106. Navigation information includes scrolling actions for theuser.

As discussed above, media player 110 may go out of bounds from scrollingtrays 204 or a page. For the scrolling of trays 204, at 604, playercontroller 108 activates position manager 502 to determine which tilesgo out of bounds during scrolling of a tray 204. For example, positionmanager 502 detects which tiles go off screen and detaches those tilesfrom the current view in trays 204. Also, position manager 502 detectswhich tiles come on screen and are activated in trays 204.

At 606, position manager 502 determines if a tile including media player110 that is playing in the inline mode has been detached from tray 204.For example, media player 110 may go out of bounds. If media player 110is still in-bounds, the process continues to 608.

When media player 110 is detached, at 610, player mode manager 504transitions media player 110 into a different mode and moves the mediaplayer. For example, player mode manager 504 transitions media player110 to a docked mode at the bottom of the page.

In addition to tiles being detached, trays 204 may go out of bounds. Inthis case, at 608, position manager 502 determines if a tray includingmedia player 110 that is playing in the inline mode has been moved outof bounds. For example, tray 204 may go off screen from scrolling thepage. If media player 110 is still in-bounds, the process reiterates to602 to determine further navigation actions.

When a tray 204 with a media player 110 playing in inline mode goes outof bounds, at 610, player mode manager 504 transitions media player 110into a different mode and moves the media player. For example, playermode manager 504 transitions media player 110 to a docked mode at thebottom of the page.

Accordingly, particular embodiments allow a user to play a media programinline in a tray while allowing the user to continue to browse the page.While scrolling, the user may intentionally or accidentally move theinline player out of bounds. In this case, to allow the user to continueto watch the media program

The following shows code implementing an embodiment:

For steps 602 and 604 above: // This method is triggered whenever userscrolls the scroll view, and calculates which views are still within thevisible area, and detaches the views that go out of bound, andre-attaches the views that go into the bound. void scrollViewDidScroll {for (subview in self.views) { if (RectanglesOverlap(subview.frame,self.bounds)) { self.addSubview(subview); } else {subview.removeFromSuperview( ); } } }

For step 606: // This method makes sure that if the inline player's tileis detached from the scroll view, the play mode changes and player movesvoid removeFromSuperview( ) { if (self.isPlaying) {PlayerController.changePlayerModeTo(bottomPanelMode); } superremoveFromSuperview( ); }

For step 608: // This method makes sure that if the whole tray is movedout of bound (e.g. user scrolls vertically to move the tray out), theplay mode changes void removeFromSuperview( ) { for (tile inself.scrollView.views) { if ((tile is PlayableTile) && tile.isPlaying) {PlayerController.changePlayerModeTo(bottomPanelMode); break; } } }

For step 610: // This method performs the transition between modes voidchangePlayerModeTo(newMode) { currentPlayer = self.getCurrentPlayer( );oldContainer = currentPlayer.container; newContainer = nil; if (newMode== FullScreen) { newContainer = createFullScreenContainer( ); } else if(newMode == BottomPanelMode) { newContainer =createBottomPanelPlayerContainer( ); } else if (newMode == InlineMode) {newContainer = getLastInlinePlaybackTile( ); } currentPlayer.frame =newContainer.playerFrame; currentPlayer.container = newContainer;newContainer.addSubview(currentPlayer); }

System Overview

Features and aspects as disclosed herein may be implemented inconjunction with a video streaming system 700 in communication withmultiple client devices via one or more communication networks as shownin FIG. 7. Aspects of the video streaming system 700 are describedmerely to provide an example of an application for enabling distributionand delivery of content prepared according to the present disclosure. Itshould be appreciated that the present technology is not limited tostreaming video applications, and may be adapted for other applicationsand delivery mechanisms.

In one embodiment, a media program provider may include a library ofmedia programs. For example, the media programs may be aggregated andprovided through a site (e.g., Website), application, or browser. A usercan access the media program provider's site or application and requestmedia programs. The user may be limited to requesting only mediaprograms offered by the media program provider.

In system 700, video data may be obtained from one or more sources forexample, from a video source 710, for use as input to a video contentserver 702. The input video data may comprise raw or edited frame-basedvideo data in any suitable digital format, for example, Moving PicturesExperts Group (MPEG)-1, MPEG-2, MPEG-4, VC-1, H.264/Advanced VideoCoding (AVC), High Efficiency Video Coding (HEVC), or other format. Inan alternative, a video may be provided in a non-digital format andconverted to digital format using a scanner and/or transcoder. The inputvideo data may comprise video clips or programs of various types, forexample, television episodes, motion pictures, and other contentproduced as primary content of interest to consumers. The video data mayalso include audio or only audio may be used.

The video streaming system 700 may include one or more computer serversor modules 702, 704, and/or 707 distributed over one or more computers.Each server 702, 704, 707 may include, or may be operatively coupled to,one or more data stores 709, for example databases, indexes, files, orother data structures. A video content server 702 may access a datastore (not shown) of various video segments. The video content server702 may serve the video segments as directed by a user interfacecontroller communicating with a client device. As used herein, a videosegment refers to a definite portion of frame-based video data, such asmay be used in a streaming video session to view a television episode,motion picture, recorded live performance, or other video content.

In some embodiments, a video advertising server 704 may access a datastore of relatively short videos (e.g., 10 second, 30 second, or 60second video advertisements) configured as advertising for a particularadvertiser or message. The advertising may be provided for an advertiserin exchange for payment of some kind, or may comprise a promotionalmessage for the system 700, a public service message, or some otherinformation. The video advertising server 704 may serve the videoadvertising segments as directed by a user interface controller (notshown).

The video streaming system 700 also may include player controller 108.In this case player controller 108 is found on the server side or maycommunicate with a player controller 108 in the client.

The video streaming system 700 may further include an integration andstreaming component 707 that integrates video content and videoadvertising into a streaming video segment. For example, streamingcomponent 707 may be a content server or streaming media server. Acontroller (not shown) may determine the selection or configuration ofadvertising in the streaming video based on any suitable algorithm orprocess. The video streaming system 700 may include other modules orunits not depicted in FIG. 7, for example administrative servers,commerce servers, network infrastructure, advertising selection engines,and so forth.

The video streaming system 700 may connect to a data communicationnetwork 712. A data communication network 712 may comprise a local areanetwork (LAN), a wide area network (WAN), for example, the Internet, atelephone network, a wireless cellular telecommunications network (WCS)714, or some combination of these or similar networks.

One or more client devices 720 may be in communication with the videostreaming system 700, via the data communication network 712 and/orother network 714. Such client devices may include, for example, one ormore laptop computers 720-1, desktop computers 720-2, “smart” mobilephones 720-3, tablet devices 720-4, network-enabled televisions 720-5,or combinations thereof, via a router 718 for a LAN, via a base station716 for a wireless telephony network 714, or via some other connection.In operation, such client devices 720 may send and receive data orinstructions to the system 600, in response to user input received fromuser input devices or other input. In response, the system 700 may servevideo segments and metadata from the data store 709 responsive toselection of media programs to the client devices 720. Client devices720 may output the video content from the streaming video segment in amedia player using a display screen, projector, or other video outputdevice, and receive user input for interacting with the video content.

Distribution of audio-video data may be implemented from streamingcomponent 707 to remote client devices over computer networks,telecommunications networks, and combinations of such networks, usingvarious methods, for example streaming. In streaming, a content serverstreams audio-video data continuously to a media player componentoperating at least partly on the client device, which may play theaudio-video data concurrently with receiving the streaming data from theserver. Although streaming is discussed, other methods of delivery maybe used. The media player component may initiate play of the video dataimmediately after receiving an initial portion of the data from thecontent provider. Traditional streaming techniques use a single providerdelivering a stream of data to a set of end users. High bandwidths andprocessing power may be required to deliver a single stream to a largeaudience, and the required bandwidth of the provider may increase as thenumber of end users increases.

Streaming media can be delivered on-demand or live. Streaming enablesimmediate playback at any point within the file. End-users may skipthrough the media file to start playback or change playback to any pointin the media file. Hence, the end-user does not need to wait for thefile to progressively download. Typically, streaming media is deliveredfrom a few dedicated servers having high bandwidth capabilities via aspecialized device that accepts requests for video files, and withinformation about the format, bandwidth and structure of those files,delivers just the amount of data necessary to play the video, at therate needed to play it. Streaming media servers may also account for thetransmission bandwidth and capabilities of the media player on thedestination client. Streaming component 707 may communicate with clientdevice 720 using control messages and data messages to adjust tochanging network conditions as the video is played. These controlmessages can include commands for enabling control functions such asfast forward, fast reverse, pausing, or seeking to a particular part ofthe file at the client.

Since streaming component 707 transmits video data only as needed and atthe rate that is needed, precise control over the number of streamsserved can be maintained. The viewer will not be able to view high datarate videos over a lower data rate transmission medium. However,streaming media servers (1) provide users random access to the videofile, (2) allow monitoring of who is viewing what video programs and howlong they are watched (3) use transmission bandwidth more efficiently,since only the amount of data required to support the viewing experienceis transmitted, and (4) the video file is not stored in the viewer'scomputer, but discarded by the media player, thus allowing more controlover the content.

Streaming component 707 may use TCP-based protocols, such as HTTP andReal Time Messaging Protocol (RTMP). Streaming component 707 can alsodeliver live webcasts and can multicast, which allows more than oneclient to tune into a single stream, thus saving bandwidth. Streamingmedia players may not rely on buffering the whole video to providerandom access to any point in the media program. Instead, this isaccomplished through the use of control messages transmitted from themedia player to the streaming media server. Another protocol used forstreaming is hypertext transfer protocol (HTTP) live streaming (HLS).The HLS protocol delivers video over HTTP via a playlist of smallsegments that are made available in a variety of bitrates typically fromone or more content delivery networks (CDNs). This allows a media playerto switch both bitrates and content sources on a segment-by-segmentbasis. The switching helps compensate for network bandwidth variancesand also infrastructure failures that may occur during playback of thevideo.

The delivery of video content by streaming may be accomplished under avariety of models. In one model, the user pays for the viewing of videoprograms, for example, using a fee for access to the library of mediaprograms or a portion of restricted media programs, or using apay-per-view service. In another model widely adopted by broadcasttelevision shortly after its inception, sponsors pay for thepresentation of the media program in exchange for the right to presentadvertisements during or adjacent to the presentation of the program. Insome models, advertisements are inserted at predetermined times in avideo program, which times may be referred to as “ad slots” or “adbreaks.” With streaming video, the media player may be configured sothat the client device cannot play the video without also playingpredetermined advertisements during the designated ad slots.

Referring to FIG. 8, a diagrammatic view of an apparatus 800 for viewingvideo content and advertisements is illustrated. In selectedembodiments, the apparatus 800 may include a processor (CPU) 802operatively coupled to a processor memory 804, which holds binary-codedfunctional modules for execution by the processor 802. Such functionalmodules may include an operating system 806 for handling systemfunctions such as input/output and memory access, a browser 808 todisplay web pages, and media player 810 for playing video. The modulesmay further include player controller 108. Player controller 108 mayoperate independently or communicate with a player controller 108 on theserver side. The memory 804 may hold additional modules not shown inFIG. 8, for example modules for performing other operations describedelsewhere herein.

A bus 814 or other communication component may support communication ofinformation within the apparatus 800. The processor 802 may be aspecialized or dedicated microprocessor configured to perform particulartasks in accordance with the features and aspects disclosed herein byexecuting machine-readable software code defining the particular tasks.Processor memory 804 (e.g., random access memory (RAM) or other dynamicstorage device) may be connected to the bus 814 or directly to theprocessor 802, and store information and instructions to be executed bya processor 802. The memory 804 may also store temporary variables orother intermediate information during execution of such instructions.

A computer-readable medium in a storage device 824 may be connected tothe bus 814 and store static information and instructions for theprocessor 802; for example, the storage device (CRM) 824 may store themodules 806, 808, 810 and 812 when the apparatus 800 is powered off,from which the modules may be loaded into the processor memory 804 whenthe apparatus 800 is powered up. The storage device 824 may include anon-transitory computer-readable storage medium holding information,instructions, or some combination thereof, for example instructions thatwhen executed by the processor 802, cause the apparatus 800 to beconfigured to perform one or more operations of a method as describedherein.

A communication interface 816 may also be connected to the bus 814. Thecommunication interface 816 may provide or support two-way datacommunication between the apparatus 800 and one or more externaldevices, e.g., the streaming system 700, optionally via a router/modem826 and a wired or wireless connection. In the alternative, or inaddition, the apparatus 800 may include a transceiver 818 connected toan antenna 828, through which the apparatus 800 may communicatewirelessly with a base station for a wireless communication system orwith the router/modem 826. In the alternative, the apparatus 800 maycommunicate with a video streaming system 700 via a local area network,virtual private network, or other network. In another alternative, theapparatus 800 may be incorporated as a module or component of the system800 and communicate with other components via the bus 814 or by someother modality.

The apparatus 800 may be connected (e.g., via the bus 814 and graphicsprocessing unit 820) to a display unit 828. A display 828 may includeany suitable configuration for displaying information to an operator ofthe apparatus 800. For example, a display 828 may include or utilize aliquid crystal display (LCD), touchscreen LCD (e.g., capacitivedisplay), light emitting diode (LED) display, projector, or otherdisplay device to present information to a user of the apparatus 800 ina visual display.

One or more input devices 830 (e.g., an alphanumeric keyboard,microphone, keypad, remote controller, game controller, camera or cameraarray) may be connected to the bus 814 via a user input port 822 tocommunicate information and commands to the apparatus 800. In selectedembodiments, an input device 830 may provide or support control over thepositioning of a cursor. Such a cursor control device, also called apointing device, may be configured as a mouse, a trackball, a track pad,touch screen, cursor direction keys or other device for receiving ortracking physical movement and translating the movement into electricalsignals indicating cursor movement. The cursor control device may beincorporated into the display unit 828, for example using a touchsensitive screen. A cursor control device may communicate directioninformation and command selections to the processor 802 and controlcursor movement on the display 828. A cursor control device may have twoor more degrees of freedom, for example allowing the device to specifycursor positions in a plane or three-dimensional space.

Particular embodiments may be implemented in a non-transitorycomputer-readable storage medium for use by or in connection with theinstruction execution system, apparatus, system, or machine. Thecomputer-readable storage medium contains instructions for controlling acomputer system to perform a method described by particular embodiments.The computer system may include one or more computing devices. Theinstructions, when executed by one or more computer processors, may beconfigured to perform that which is described in particular embodiments.

As used in the description herein and throughout the claims that follow,“a”, “an”, and “the” includes plural references unless the contextclearly dictates otherwise. Also, as used in the description herein andthroughout the claims that follow, the meaning of “in” includes “in” and“on” unless the context clearly dictates otherwise.

The above description illustrates various embodiments along withexamples of how aspects of particular embodiments may be implemented.The above examples and embodiments should not be deemed to be the onlyembodiments, and are presented to illustrate the flexibility andadvantages of particular embodiments as defined by the following claims.Based on the above disclosure and the following claims, otherarrangements, embodiments, implementations and equivalents may beemployed without departing from the scope hereof as defined by theclaims.

What is claimed is:
 1. A method comprising: playing, by a computingdevice on an interface, a media program in a media player operating in afirst mode; detecting, by the computing device, a change in a conditionfor the media player; switching, by the computing device, from the firstmode to a second mode based on the change in the condition, wherein thesecond mode restricts movement of the media player; and moving, by thecomputing device, the media player from a first position to a secondposition upon switching to the second mode, the media player continuingto play the media program in the second position.
 2. The method of claim1, wherein moving the media player comprises: moving the media playerfrom an out of bounds position where a portion of the media player isnot visible on the interface to a position where the portion is visibleon the interface.
 3. The method of claim 1, wherein moving the mediaplayer comprises: moving the media player from a position above a bottompanel of the interface to a position at the bottom panel of theinterface.
 4. The method of claim 1, wherein after moving to the secondposition, the media player does not move when a portion of the interfaceis scrolled.
 5. The method of claim 1, wherein the second mode is adocked mode where the media player does not move based on a user'snavigation of a page displayed on the interface.
 6. The method of claim1, wherein detecting the change in the condition for the media playercomprises: detecting an input that causes the change in the condition.7. The method of claim 6, wherein detecting the input comprises:receiving a gesture at the interface.
 8. The method of claim 6, whereinthe input is received at a button on the interface.
 9. The method ofclaim 1, further comprising: detecting another change in the conditionfor the media player; switching from the second mode to the first modebased on the change in the condition; and moving the media player fromthe second position to the first position, the media player continuingto play the media program in the first position.
 10. The method of claim1, further comprising: detecting another change in the condition for themedia player; switching from the second mode to a third mode or thefirst mode to the third mode based on the change in the condition; andmoving the media player from the second position to a third position orthe first position to the third position, the media player continuing toplay the media program in the first position.
 11. The method of claim10, wherein the third position is a full screen view in the interface.12. The method of claim 1, wherein moving the media player comprises:opening a new container for the media player; and moving the mediaplayer to the new container.
 13. The method of claim 1, wherein a sizeof the media player is changed when the media player is moved.
 14. Themethod of claim 1, wherein moving the media player comprises: moving themedia player to a corner of the interface.
 15. A non-transitorycomputer-readable storage medium containing instructions, that whenexecuted, control a computer system to be configured for: playing, on aninterface, a media program in a media player operating in a first mode;detecting a change in a condition for the media player; switching fromthe first mode to a second mode based on the change in the condition,wherein the second mode restricts movement of the media player; andmoving the media player from a first position to a second position uponswitching to the second mode, the media player continuing to play themedia program in the second position.
 16. The non-transitorycomputer-readable storage medium of claim 13, wherein moving the mediaplayer comprises: moving the media player from an out of bounds positionwhere a portion of the media player is not visible on the interface to aposition where the portion is visible on the interface.
 17. Thenon-transitory computer-readable storage medium of claim 16, whereinmoving the media player comprises: moving the media player from aposition above a bottom panel of the interface to a position at thebottom panel of the interface.
 18. A method comprising: playing, by acomputing device on an interface, a media program in a media playeroperating in a first mode; detecting, by the computing device, a changein a condition for the media player; selecting, by the computing device,between switching from the first mode to a second mode or a third modebased on the change in the condition; when the second mode is selected,moving, by the computing device, the media player from a first positionto a second position on the interface; and when the third mode isselected, moving, by the computing device, the media player from a firstposition to a full screen view.
 19. The method of claim 18, whereindetecting the change in the condition for the media player comprises:detecting an input that causes the change in the condition.
 20. Themethod of claim 18, further comprising: detecting another change in thecondition for the media player; when the media player is operating inthe second mode, switching from the second mode to the first mode or thethird mode based on the change in the condition; and when the mediaplayer is operating in the third mode, switching from the third mode tothe first mode or the second mode based on the change in the condition.